package com.ss4;

/**
 * @Auther: 520ljs
 * @Date: 2022/3/12 - 03 - 12 - 11:36
 * 1.类是类，接口是接口，它们是同一层次的概念
 * 2.接口中没有构造器
 * 3.接口如何声明：interface
 * 4.在JDK1.8之前，接口中只有两部分内容：
 * (1)常量：固定修饰符：public static final
 * (2)抽象方法：固定修饰符：public abstract
 * 注意：修饰符可以省略不写，IDE会帮你自动补全，但是初学者建议写上，防止遗忘。
 */
public interface TestInterface01 {
    //常量：
    public static final int NUM = 10;

    public abstract void a();

    public abstract void b(int num);

    public abstract int c(String name);
}

interface TestInterface02 {
    void e();

    void f();
}

/*
5.类和接口的关系是什么？ 实现关系 类实现接口
6.一旦实现一个接口，那么实现类要重写接口中的全部的抽象方法：
7.如果没有全部重写抽象方法，那么这个类可以变成一个抽象类。
8.java只有但基础，java还有多实现:
一个类继承其它类，只能直接继承一个父类
但是实现类实现接口的话，可以实现多个接口
9.写法；先继承 再实现：extends Person implements TestInterface01, TestInterface02
 */
class Student extends Person implements TestInterface01, TestInterface02{
    @Override
    public void a() {

    }

    @Override
    public void b(int num) {

    }

    @Override
    public int c(String name) {
        return 0;
    }

    @Override
    public void e() {

    }

    @Override
    public void f() {

    }
}

class Test {
    //这是一个main方法，是程序的入口
    public static void main(String[] args) {
        //10.接口不能创建对象：
        //TestInterface02 t = new TestInterface02();
        TestInterface02 t = new Student(); //接口指向实现类--->多态

        //11.接口中常量如何访问：
        System.out.println(TestInterface01.NUM);
        System.out.println(Student.NUM);
        Student s = new Student();
        System.out.println(s.NUM);
        TestInterface01 t2 = new Student();
        System.out.println(t2.NUM);
    }
}
